
#ifndef EVTQUEUE_H
#define EVTQUEUE_H



/*===========================[Includes]======================================*/


#include "stdint.h"


#ifdef __cplusplus
extern "C" {
#endif


/*===========================[Defines]=======================================*/



/*===========================[Macros]========================================*/
/*===========================[Typedef]=======================================*/

/**
 * @brief 事件操作类型
 */
typedef enum {
    EVT_ADD  = 0,	 // 添加事件
    EVT_DELET,       // 删除事件
    
} do_evt_op_t;



/**
 * @brief 事件种类
 */
typedef enum {
    EVT_EXIT = 0,
    EVT_FIRE,  
    EVT_ALARM,     
    EVT_RECOM,      /**> 复合报警 */
    EVT_ACTIVE,
    EVT_FEEDBACK,
    EVT_SUPERVISE,
    EVT_FAULT,
    EVT_SCHIELD,
    EVT_OTHER,
    EVT_MAX
} evt_type_t;



/**
 * @brief 火警事件
 */
typedef enum 
{
   FIRE_SMOKE,  /**> 烟雾报警 */
   FIRE_TEMP,   /**> 温度报警 */
	
} evt_fire_t;

/**
 * @brief 报警事件
*/
typedef enum 
{
   ALARM_MANUAL_BUTTON,
   ALARM_SOUND_LIGHT,
	
} evt_alarm_t;

/**
 * @brief 复合报警
 * 
 */
typedef enum 
{
    RECOM_L2,
    RECOM_L3,
    RECOM_L4
	
} evt_recom_t; 


/**
 * @brief 启动事件
 * 
 */
typedef enum
{
    ACTIVE_REQUEST
}evt_active_t;



/**
 * @brief 反馈事件
 * 
 */
typedef enum
{
   IO_MODE_INPUT,
}evt_feedback_t;


/**
 * @brief 监管事件
 * 
 */
typedef enum
{
   TODO,
}evt_supersive_t;


/**
 * @brief 故障事件
 * 
 */
typedef enum
{
   FAULT_COMMUNITY,
}evt_fault_t;


/**
 * @brief 屏蔽事件
 * 
 */
typedef enum
{
   SCHIELD_SMOKE,
}evt_schield_t;


/**
 * @brief 其他事件
 * 
 */
typedef enum
{
   OTHER_,
}evt_other_t;



/**
 * @brief 事件
 */
typedef struct 
{
	do_evt_op_t IsEventDel;					// 事件是删除还是生成，0 = 生成， 1 = 删除 
    evt_type_t  EvtKind;
    union
    {
		uint32_t 			EvtCommom;  
		evt_fire_t          fire_evt;
		evt_alarm_t         alarm_evt;
		evt_recom_t         recom_evt;
		evt_active_t        active_evt;
        evt_feedback_t      feedback_evt;
        evt_supersive_t     supersive_evt;
        evt_fault_t         fault_evt;
        evt_schield_t       schield_evt;   
        evt_other_t         other_evt;    
    };
    uint32_t    time;
} evt_t;





/*===========================[Global Prototypes]=============================*/









#ifdef __cplusplus
}
#endif


# endif